$(document).ready(function () {

  $('.item-pass .check-select, .item-no-pass .check-select').click(function (e) {
    var tarDom = e.currentTarget;

    if ($(tarDom).attr('class').split(' ').indexOf('select') >= 0) {
      $(tarDom).removeClass('select')
    } else {
      $(tarDom).addClass('select')
      $(tarDom).parent().siblings().find('.check-select').removeClass('select')
    }
  })

  var treeData = {
    // 复选框change事件
    onchange: function (input, yntree) {
      console.log(this);
    },
    // 是否是可选的
    isSelect: false,
    // 是否严格的遵循父子互相关联的做法
    checkStrictly: true,
    data: [{
        name: "系统管理",
        inputName: "system",
        value: "系统管理",
        children: [{
            // 树名称
            name: "用户管理",
            // 复选框的name属性值
            inputName: "user",
            // 复选框的值
            value: "用户管理",
            // 复选框的class
            className: "",
            // 默认是否选中
            checked: false,
            // 是否禁用
            disabled: false,
            // 额外数据，如果数据是基本数据类型，则会以data-xx="yyy"的形式附加到复选框中
            datas: {

            },
            children: [{
                name: "添加用户",
                inputName: "user",
                value: "添加用户",
                checked: false,
                disabled: true
              },
              {
                name: "查看用户",
                inputName: "user",
                value: "查看用户"
              },
              {
                name: "编辑用户",
                inputName: "user",
                value: "编辑用户",
                disabled: true,
                children: [{
                    name: "删除用户",
                    inputName: "user",
                    value: "删除用户"
                  },
                  {
                    name: "修改用户",
                    inputName: "user",
                    value: "修改用户",
                    checked: false
                  }
                ]
              }

            ]
          },
          {
            name: "投诉管理",
            inputName: "complaint",
            value: "投诉管理",
            checked: false,
            children: [{
                name: "添加投诉",
                inputName: "complaint",
                value: "添加投诉"
              },
              {
                name: "删除投诉",
                inputName: "complaint",
                value: "删除投诉"
              },
              {
                name: "编辑投诉",
                inputName: "complaint",
                value: "编辑投诉"
              },
              {
                name: "查看投诉",
                inputName: "complaint",
                value: "查看投诉"
              }
            ]
          }
        ]
      },
      {
        name: "我的公司",
        inputName: "company",
        value: "我的公司",
        children: [{
            name: "公司管理",
            inputName: "company manage",
            value: "公司管理"
          },
          {
            name: "部门管理",
            inputName: "department manage",
            value: "部门管理"
          }
        ]
      }
    ]
  };

  // var yntree = new YnTree(document.getElementById("tree"), treeData);
  // console.log('treeData', treeData);

  // yntree.data[0].spread(true);
  // yntree.data[0].children[1].spread(true);
  // yntree.data[0].children[1].children[2].spread(true);


  initDialog1()
  initDialog2()
  initDialog3()
  initDialog4()
})

function callback1(e) {
  console.log('callback1', e);
  closeDialog(e)
}


// ------ 选择封闭后仍可操作的流程 -------

// 选中的流程选id
var flowIds = []

// init 选择封闭后仍可操作的流程 内容
function initDialog1() {

  // 操作流程线
  var options = [{
      label: '允许申请录入',
      value: 0
    },
    {
      label: '允许资料审核',
      value: 1
    },
    {
      label: '允许生成资金申请表',
      value: 2
    },
    {
      label: '允许机具核验',
      value: 3
    },
    {
      label: '允许公示',
      value: 4
    },
    {
      label: '允许公示通过待确认',
      value: 5
    },
    {
      label: '允许生成申请结算资料',
      value: 6
    },
    {
      label: '允许生成申请结算资料',
      value: 7
    },
    {
      label: '允许确认结算',
      value: 8
    }
  ]

  for (var i = 0; i < options.length; i++) {
    var item = options[i];
    var str = '<div class="custom-control custom-checkbox custom-success"><input type="checkbox" class="custom-control-input" value="' +
      item.value + '" id="flowGroup' + item.value +
      '"><label class="custom-control-label" for="flowGroup' + item.value +
      '">' + item.label + '</label></div>';

    $('.flow-group')
    $('.flow-group').append($(str));
  }

  // 操作流程线选中操作
  $('.flow-group .custom-control .custom-control-input').bind('change', function () {
    if ($(this).is(":checked")) {
      flowIds.push($(this).val())
    } else {
      flowIds.splice(flowIds.indexOf($(this).val()), 1)
    }

    console.log('选中项', flowIds);
  })

  initSelect({
    name: 'enclosingType',
    elId: '#enclosingType',
    defaultValue: [0],
    tips: '请选择',
    data: [{
        name: '所有',
        value: '0'
      },
      {
        name: '撤证',
        value: 3
      },
      {
        name: '注销',
        value: 4
      },
      {
        name: '暂停（认证产品）',
        value: 5
      }
    ],
    callback: function (data) {
      //arr:  当前已选中的数据
      var arr = data.arr;
      //change, 此次选择变化的数据,数组
      var change = data.change;
      //isAdd, 此次操作是新增还是删除
      var isAdd = data.isAdd;

      if (!isAdd) {
        arr.push(change[0])
      }

      console.log('封闭类型', change);
    }
  })

  // 校验
  $('#formData1').bootstrapValidator({
    message: ' ',
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
      // 封闭原因校验
      closureCause: {
        validators: {
          notEmpty: {
            message: '请填写封闭原因！'
          }
        }
      }
    }
  });
}

// dialog1 保存
function dialog1Save() {
  let formData = $('#formData1').serializeArray()
  // console.log('formData1', formData);
  console.log('校验', validate('#formData1'));
}

// 验证
function validate(id) {
  $(id).data('bootstrapValidator').validate()
  $(id).bootstrapValidator('validate');

  var ispass = false
  ispass = $(id).data('bootstrapValidator').isValid()

  if (!ispass) {
    //没有通过校验
    console.log('未通过');
  } else {
    //通过校验，可进行提交等操作
    console.log('已通过');
  }

  return ispass
}

// init 表单下拉相关
function initSelect(data) {
  return xmSelect.render({
    name: data.name, // 表单提交时的 name
    el: data.elId,
    tips: data.tips,
    radio: true, // 是否开启单选
    clickClose: true, // 是否在选择完毕之后关闭下拉菜单
    theme: {
      color: '#409eff',
    },
    model: {
      icon: 'hidden',
      label: {
        type: 'text',
        block: {
          //最大显示数量, 0:不限制
          showCount: 10,
          //是否显示删除图标
          showIcon: false,
        }
      }
    },
    initValue: data.defaultValue,
    data: data.data,
    on: data.callback
  })
}



// ------------------ 旧补贴额执行标准设置 ----------------------

function initDialog2() {

  initDatePick()
}
// 日期时间相关
function initDatePick(name) {
  $('.wrap-time').on('click', function () {
    var _this = this;
    var reportTimeType = 5;
    var double = false;
    if (!$(this).next('[name="datePicker"]').length) {
      $(this).after("<div class='el-date-picker' name='datePicker'></div>");
      $('.el-date-picker')
      datePicker = $('.el-date-picker').datePicker({
        reportTimeType: reportTimeType, // 4代表小时、5代表天、6代表周、7代表月、8代表季、9代表年
        startDom: $(_this).find('input[name="startTime"]'), // 开始时间要赋值的DOM元素
        endDom: $(_this).find('input[name="endTime"]'), // 结束时间要赋值的DOM元素
        format: 'YYYY-MM-DD',
        // fastTime: fastTime[double][reportTimeType], // 快速选择的时间
        isFast: false, // 是否显示快速选择的选项
        isDouble: double, // 是否双选择的日历
        disabledDate: false, // 是否禁用以后的时间
        showApplyButton: true,
        yes: function (startTime, endTime) { // 成功赋值前的回调可改变赋值的时间格式
        },
      });
    } else {
      if ($(this).next('[name="datePicker"]').hasClass('hide')) {
        $(this).next('[name="datePicker"]').removeClass('hide');
        datePicker.render();
      } else {
        $(this).next('[name="datePicker"]').addClass('hide');
      }
    }
  });
  // 监听点击其他地方关闭日期实现选择弹窗
  $(document).click(function (event) {
    let area = $('.datePicker-x')
    let area1 = $('.wrap-time')
    if ($(event.target).closest(area).length > 0 || $(event.target).closest(area1).length > 0) {
      // console.log('在里边');
    } else {
      $('.datePicker-x').addClass('hide')
    }
  })
}

// 添加标准设置
function addStandard(e) {
  var html = '<tr>' +
    '<td>' +
    '<div class="wrap-time">' +
    '<input name="startTime" type="text" readonly placeholder="请选择起始日期">' +
    '</div>' +
    '</td>' +
    '<td>' +
    '<div class="wrap-time">' +
    '<input name="endTime" type="text" readonly placeholder="请选择结束日期">' +
    '</div>' +
    '</td>' +
    '<td>' +
    '<input class="subsidy-num" type="text">' +
    '</td>' +
    '<td>' +
    '<input class="subsidy-num" type="text">' +
    '</td>' +
    '<td>' +
    '<span class="subsidy-del" onclick="delStandard(this)">' +
    '<img src="../images/statistics/del.png" alt="">' +
    '</span>' +
    '</td>' +
    '</tr>';
  $(e).parent().parent().before(html)
  initDatePick()
}

// 删除当前标准设置
function delStandard(e) {
  $(e).parentsUntil('tbody').remove()
}

// ------------------ 设置三合一机具分类 ----------------------

// init 机具选择分类
function initDialog3() {
  initEquipmentTree()
}

// 选中的机具分类
var selectedEquipment = [];

var yntree = null;

// init 机具tree
function initEquipmentTree() {
  var treeData = {
    // 复选框change事件
    onchange: function (data, yntree) {
      // console.log('this', this.children);
      if (this.children) {
        for (var i = 0; i < this.children.length; i++) {
          var item = this.children[i]
        }
      }
      // 创建一个性能观察器对象
      setTimeout(function () {
        gtSelected(yntree, data)
      }, 0)
    },
    // 是否严格的遵循父子互相关联的做法
    checkStrictly: true,
    // 是否只返回最后一级
    isFinally: true,
    data: [{
        name: "系统管理",
        inputName: "system",
        value: "系统管理",
        children: [{
            // 树名称
            name: "用户管理",
            // 复选框的name属性值
            inputName: "user",
            // 复选框的值
            value: "用户管理",
            // 复选框的class
            className: "",
            // 默认是否选中
            checked: false,
            // 是否禁用
            disabled: false,
            // 额外数据，如果数据是基本数据类型，则会以data-xx="yyy"的形式附加到复选框中
            datas: {

            },
            children: [{
                name: "添加用户",
                inputName: "user",
                value: "添加用户",
                checked: false,
                disabled: true
              },
              {
                name: "查看用户",
                inputName: "user",
                value: "查看用户"
              },
              {
                name: "编辑用户",
                inputName: "user",
                value: "编辑用户",
                disabled: true,
                children: [{
                    name: "删除用户",
                    inputName: "user",
                    value: "删除用户"
                  },
                  {
                    name: "修改用户",
                    inputName: "user",
                    value: "修改用户",
                    checked: false
                  }
                ]
              }

            ]
          },
          {
            name: "投诉管理",
            inputName: "complaint",
            value: "投诉管理",
            checked: false,
            children: [{
                name: "添加投诉",
                inputName: "complaint",
                value: "添加投诉"
              },
              {
                name: "删除投诉",
                inputName: "complaint",
                value: "删除投诉"
              },
              {
                name: "编辑投诉",
                inputName: "complaint",
                value: "编辑投诉"
              },
              {
                name: "查看投诉",
                inputName: "complaint",
                value: "查看投诉"
              }
            ]
          }
        ]
      },
      {
        name: "我的公司",
        inputName: "company",
        value: "我的公司",
        children: [{
            name: "公司管理",
            inputName: "company manage",
            value: "公司管理",
            children: []
          },
          {
            name: "部门管理",
            inputName: "department manage",
            value: "部门管理"
          }
        ]
      }
    ]
  };

  yntree = new YnTree(document.getElementById("equipmentTree"), treeData);
}

// 获取选中项
function gtSelected(tree) {
  var getVal = tree.getValues();
  var arr = [];
  for (var i = 0; i < getVal.length; i++) {
    var item = getVal[i];
    arr.push(item)
  }

  selectedEquipment = [];

  selectedEquipment = JSON.parse(JSON.stringify(arr))

  initSelected()
}

// init selected
function initSelected() {
  $('.selected-list').html('')
  var html = ''

  for(var i = 0; i < selectedEquipment.length; i++) {
    var item = selectedEquipment[i].item
    html += '<li class="selected-item">'
    html += '<div>'
    html += item.name
    html += '</div>'
    html += '<span class="del-selected" data="'
    html += JSON.stringify(item).replace(/"/g, "'")
    html += '" onclick="delSelected(this)">'
    html += '<i class="mdi mdi-close"></i>'
    html += '</span>'
    html += '</li>'
  }

  $('.selected-list').append(html)
}

// 清空选项
function clearSelected() {
  for(var i = 0; i < selectedEquipment.length; i++) {
    var item = selectedEquipment[i].item
    yntree.select(item.value, false)
  }
  $('.selected-list').html('')
}

// 删除选中项
function delSelected(e) {
  var data = JSON.parse($(e).attr('data').replace(/'/g, '"'))

  yntree.select(data.value, false)
  $(e).parent().remove()
}

// ------------------ 区域品目设置 ----------------------

// init 区域品目设置
function initDialog4() {
  initRegionTree()
}

// 区域品目 tab 切换
function regionSettingTabChange(e) {
  $(e).parent().children().removeClass('select')
  $(e).addClass('select')
}

// 选中的区域
var selectedRegion = [];

var regiontree = null;

// init 机具tree
function initRegionTree() {
  var treeData = {
    // 复选框change事件
    onchange: function (data, regiontree) {
      // console.log('this', this.children);
      if (this.children) {
        for (var i = 0; i < this.children.length; i++) {
          var item = this.children[i]
        }
      }
      // 创建一个性能观察器对象
      setTimeout(function () {
        getRegionSelected(regiontree, data)
      }, 0)
    },
    // 是否严格的遵循父子互相关联的做法
    checkStrictly: true,
    // 是否只返回最后一级
    isFinally: true,
    data: [{
        name: "系统管理",
        inputName: "system",
        value: "系统管理",
        children: [{
            // 树名称
            name: "用户管理",
            // 复选框的name属性值
            inputName: "user",
            // 复选框的值
            value: "用户管理",
            // 复选框的class
            className: "",
            // 默认是否选中
            checked: false,
            // 是否禁用
            disabled: false,
            // 额外数据，如果数据是基本数据类型，则会以data-xx="yyy"的形式附加到复选框中
            datas: {

            },
            children: [{
                name: "添加用户",
                inputName: "user",
                value: "添加用户",
                checked: false,
                disabled: true
              },
              {
                name: "查看用户",
                inputName: "user",
                value: "查看用户"
              },
              {
                name: "编辑用户",
                inputName: "user",
                value: "编辑用户",
                disabled: true,
                children: [{
                    name: "删除用户",
                    inputName: "user",
                    value: "删除用户"
                  },
                  {
                    name: "修改用户",
                    inputName: "user",
                    value: "修改用户",
                    checked: false
                  }
                ]
              }

            ]
          },
          {
            name: "订单管理",
            inputName: "order",
            value: "订单管理",
            checked: false,
            children: []
          },
          {
            name: "投诉管理",
            inputName: "complaint",
            value: "投诉管理",
            checked: false,
            children: [{
                name: "添加投诉",
                inputName: "complaint",
                value: "添加投诉"
              },
              {
                name: "删除投诉",
                inputName: "complaint",
                value: "删除投诉"
              },
              {
                name: "编辑投诉",
                inputName: "complaint",
                value: "编辑投诉"
              },
              {
                name: "查看投诉",
                inputName: "complaint",
                value: "查看投诉"
              }
            ]
          }
        ]
      },
      {
        name: "我的公司",
        inputName: "company",
        value: "我的公司",
        children: [{
            name: "公司管理",
            inputName: "company manage",
            value: "公司管理",
            children: []
          },
          {
            name: "部门管理",
            inputName: "department manage",
            value: "部门管理"
          }
        ]
      }
    ]
  };

  regiontree = new YnTree(document.getElementById("regionItemsTree"), treeData);
}

// 获取选中项
function getRegionSelected(tree) {
  var getVal = tree.getValues();
  var arr = [];
  for (var i = 0; i < getVal.length; i++) {
    var item = getVal[i];
    arr.push(item)
  }

  selectedRegion = [];

  selectedRegion = JSON.parse(JSON.stringify(arr))

  initRegionSelected()
}

// init selected
function initRegionSelected() {
  $('.region-items-selected-list').html('')
  var html = ''

  for(var i = 0; i < selectedRegion.length; i++) {
    var item = selectedRegion[i].item
    html += '<li class="region-items-selected-item">'
    html += '<div>'
    html += item.name
    html += '</div>'
    html += '<span class="region-items-del-selected" data="'
    html += JSON.stringify(item).replace(/"/g, "'")
    html += '" onclick="delRegionSelected(this)">'
    html += '<i class="mdi mdi-close"></i>'
    html += '</span>'
    html += '</li>'
  }

  $('.region-selected-count').text('已选中：' + selectedRegion.length + '个区域')
  
  $('.region-items-selected-list').append(html)
}

// 清空已选区域
function clearRegionSelected() {
  for(var i = 0; i < selectedRegion.length; i++) {
    var item = selectedRegion[i].item
    regiontree.select(item.value, false)
  }
  $('.region-items-selected-list').html('')
}

// 单独删除已选区域
function delRegionSelected(e) {
  var data = JSON.parse($(e).attr('data').replace(/'/g, '"'))

  regiontree.select(data.value, false)
  $(e).parent().remove()
}